package com.ysw.lucene;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.junit.Test;

/**
 * @author shiwen
 * @date 2020/6/22
 */
public class EnglishTokenStream {

    /**
     * 查看分析器分词的效果（标准分析器，只能分析英文，不能分析中文）
     */
    @Test
    public void testTokenStream() throws Exception {
        // 创建一个Analyzer对象，StandardAnalyzer对象
        Analyzer analyzer = new StandardAnalyzer();
        // 使用分析器对象的tokenStream方法获取一个TokenStream对象
        TokenStream tokenStream = analyzer.tokenStream("", "The Spring Framework provides a comprehensive programming and configuration model.");
        //  向TokenStream对象中设置一个引用，相当于数一个指针
        CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
        // 调用TokenStream对象的reset方法，如果不调用会抛出异常
        tokenStream.reset();
        // 使用while循环遍历TokenSteam对象，如果返回true则表示搜索到了对象，否则遍历结束
        while (tokenStream.incrementToken()) {
            // 打印引用中的值
            System.out.println(charTermAttribute.toString());
        }
        // 关闭TokenSteam对象
        tokenStream.close();
    }

}